package project.gui;

import java.awt.Color;
import java.awt.GridLayout;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

/**
 * Representa el mapa en la UI. 
 * se compone de un array de Cells las cuales inicializa con un color y coordenadas
 * 
 * Con el metodo updateCell actualiza el color o imagen de la celda
 * segun el valor de la misma.   
 *     @author German
 *
 */
public class Grid extends JPanel {

	private Cell[][] cells;
	private ImageIcon imgNorth,imgSouth,imgEast,imgWest;

	public Grid(int cellsWidth, int cellsHeight){
		loadImages();
		cells = new Cell[cellsWidth][cellsHeight];
		this.setLayout(new GridLayout(cellsHeight,cellsWidth,2,2)); //2, 2 es el espacio entre celdas del grid layout

		for (int y = cellsHeight-1; y >= 0; y--) {
			for (int x = 0; x < cellsWidth; x++) {
				cells[x][y] = new Cell();
				cells[x][y].setCoorX(x);
				cells[x][y].setCoorY(y);

				cells[x][y].setBounds(x, y, 34, 34);
				//celdas[x][y].setImagenFondo(desconocida);
				this.cells[x][y].setBackground(Color.yellow);
				this.add(cells[x][y]);

			}
		}
	}

	private void loadImages(){
		imgNorth = new ImageIcon(Grid.class.getResource("1.gif"));
		imgSouth = new ImageIcon(Grid.class.getResource("3.gif"));
		imgEast = new ImageIcon(Grid.class.getResource("2.gif"));
		imgWest = new ImageIcon(Grid.class.getResource("4.gif"));
	}

	public void updateCell(int[][] mapa, int x, int y)
	{
		if (mapa[x][y]<=0)
		{
			this.cells[x][y].setBackground(Color.white);
			this.cells[x][y].setBackgroundImg(null);
		}

		else if (mapa[x][y]>0)
		{
			if (mapa[x][y]>20)
			{
				switch (mapa[x][y]) {
				case 21:
					this.cells[x][y].setBackgroundImg(imgNorth);
					break;

				case 22:
					this.cells[x][y].setBackgroundImg(imgEast);
					break;

				case 23:
					this.cells[x][y].setBackgroundImg(imgSouth);
					break;

				case 24:
					this.cells[x][y].setBackgroundImg(imgWest);
					break;

				default:
					break;
				}
			}else{
				//this.cells[x][y].setBackground(new Color(mapa[x][y]*17, 255-mapa[x][y]*17, 255-mapa[x][y]*17));
				this.cells[x][y].setBackground(new Color(150+mapa[x][y]*7, 255-mapa[x][y]*17, 255-mapa[x][y]*17));
			}
		}
		else{
			this.cells[x][y].setBackground(Color.yellow);
		}
		this.repaint();
	}
}
